<?php
//Ultima verificacion: 14-10-2014 ; 05-11-2014 ; 21-11-2014 ; 04-03-2015
class M_tutorxalumno extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las tutelas de una persona(tutor) existenes menos las borradas (-1)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT persona.*, alumno.idAlumno, alumno.legajo, alumno.estado AS estadoAlumno, tutorxalumno.idTxA, tutorxalumno.biologico, tutorxalumno.notificarAusentismoPorEmail, tutorxalumno.estado AS estadoTutela, 
											(SELECT hash FROM archivo WHERE archivo.idArchivo=persona.idArchivoFoto LIMIT 1) AS hashArchivoFoto,
											(SELECT nombre FROM tipodocumento WHERE tipodocumento.idTipoDocumento=persona.idTipoDocumento AND tipodocumento.estado<>-1 LIMIT 1) AS tipoDocumento,
											(SELECT localidad.nombre FROM localidad, provincia WHERE localidad.idProvincia=provincia.idProvincia AND localidad.idLocalidad=persona.idLocalidad AND localidad.estado<>-1 AND provincia.estado<>-1) AS localidad,
											(SELECT provincia.nombre FROM localidad, provincia WHERE localidad.idProvincia=provincia.idProvincia AND localidad.idLocalidad=persona.idLocalidad AND localidad.estado<>-1 AND provincia.estado<>-1) AS provincia,
											DATE_FORMAT(persona.fechaNacimiento,'%d/%m/%Y') AS fechaNacimientoFormateada,											
											DATE_FORMAT(tutorxalumno.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(tutorxalumno.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, alumno, tutorxalumno
									  WHERE persona.idPersona=alumno.idPersona AND 
											alumno.idAlumno=tutorxalumno.idAlumno AND 
											persona.estado=1 AND 
											alumno.estado=1 AND 
											tutorxalumno.estado>-1 $restriccion
									  ORDER BY persona.apellido ASC, persona.nombre ASC");
		return($consulta);
	}
			
	//Este metodo se utiliza cuando queremos obtener las tutelas activas de una persona(tutor)
	function buscarTutelasActivos($restriccion=null){
		$consulta = $this->db->query("SELECT persona.*, alumno.idAlumno, alumno.legajo, alumno.estado AS estadoAlumno, tutorxalumno.idTxA, tutorxalumno.biologico, tutorxalumno.notificarAusentismoPorEmail, tutorxalumno.estado AS estadoTutela, usuario.nombre AS nombreUsuario,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=persona.idArchivoFoto LIMIT 1) AS hashArchivoFoto,
											(SELECT nombre FROM tipodocumento WHERE tipodocumento.idTipoDocumento=persona.idTipoDocumento AND tipodocumento.estado<>-1 LIMIT 1) AS tipoDocumento,
											(SELECT localidad.nombre FROM localidad, provincia WHERE localidad.idProvincia=provincia.idProvincia AND localidad.idLocalidad=persona.idLocalidad AND localidad.estado<>-1 AND provincia.estado<>-1) AS localidad,
											(SELECT provincia.nombre FROM localidad, provincia WHERE localidad.idProvincia=provincia.idProvincia AND localidad.idLocalidad=persona.idLocalidad AND localidad.estado<>-1 AND provincia.estado<>-1) AS provincia,
											DATE_FORMAT(usuario.fechaUltimoCierre,'%d/%m/%Y %H:%i:%s') AS fechaUltimoCierreFormateada,
											DATE_FORMAT(persona.fechaNacimiento,'%d/%m/%Y') AS fechaNacimientoFormateada,	
											DATE_FORMAT(tutorxalumno.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(tutorxalumno.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, alumno, tutorxalumno, usuario
									  WHERE persona.idPersona=alumno.idPersona AND 
											alumno.idAlumno=tutorxalumno.idAlumno AND 
											persona.idPersona=usuario.idPersona AND 
											persona.estado=1 AND 
											alumno.estado=1 AND 
											usuario.estado<>-1 AND 
											tutorxalumno.estado=1 $restriccion
									  ORDER BY persona.apellido ASC, persona.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener los tutores activos de una persona (alumno)
	function buscarTutoresActivos($restriccion=null){
		$consulta = $this->db->query("SELECT persona.*, tutorxalumno.idTxA, tutorxalumno.biologico, tutorxalumno.notificarAusentismoPorEmail, tutorxalumno.estado AS estadoTutela, usuario.nombre AS nombreUsuario,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=persona.idArchivoFoto LIMIT 1) AS hashArchivoFoto,
											(SELECT nombre FROM tipodocumento WHERE tipodocumento.idTipoDocumento=persona.idTipoDocumento AND tipodocumento.estado<>-1 LIMIT 1) AS tipoDocumento,
											(SELECT localidad.nombre FROM localidad, provincia WHERE localidad.idProvincia=provincia.idProvincia AND localidad.idLocalidad=persona.idLocalidad AND localidad.estado<>-1 AND provincia.estado<>-1) AS localidad,
											(SELECT provincia.nombre FROM localidad, provincia WHERE localidad.idProvincia=provincia.idProvincia AND localidad.idLocalidad=persona.idLocalidad AND localidad.estado<>-1 AND provincia.estado<>-1) AS provincia,
											DATE_FORMAT(usuario.fechaUltimoCierre,'%d/%m/%Y %H:%i:%s') AS fechaUltimoCierreFormateada,
											DATE_FORMAT(persona.fechaNacimiento,'%d/%m/%Y') AS fechaNacimientoFormateada,	
											DATE_FORMAT(tutorxalumno.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(tutorxalumno.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM persona, tutor, tutorxalumno, usuario
									  WHERE persona.idPersona=tutor.idPersona AND 
											tutor.idTutor=tutorxalumno.idTutor AND 
											persona.idPersona=usuario.idPersona AND 
											persona.estado=1 AND 
											tutor.estado=1 AND 
											usuario.estado<>-1 AND 
											tutorxalumno.estado=1 $restriccion
									  ORDER BY persona.apellido ASC, persona.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una tutela. El rand se utiliza para poder hacer una restriccion a la base de datos que controle
	//que no se haya cargado dos veces el mismo alumno al mismo tutor. El problema surgue al eliminarlos.
	function eliminar($idTxA=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `tutorxalumno` 
									 SET `estado` = ".-rand(1,100000000).",
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `tutorxalumno`.`idTxA` = " . $this->db->escape($idTxA) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una tutela
	function crear($idTutor=null, $idAlumno=null, $biologico=null, $notificarAusentismoPorEmail=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `tutorxalumno` (`idTxA`,`idTutor`,`idAlumno`,`biologico`,`notificarAusentismoPorEmail`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
												     (NULL,".$this->db->escape($idTutor).",".$this->db->escape($idAlumno).",".$this->db->escape($biologico).",".$this->db->escape($notificarAusentismoPorEmail).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver una tutela en particular usado generalmente en el formulario de modificar
	function get($idTxA=null){
		$consulta = $this->db->query("SELECT *
									  FROM tutorxalumno
									  WHERE estado>-1 AND 
											idTxA=".$this->db->escape($idTxA)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos saber si un tutor tiene la tutela de un alumno y esta es una tutela activa.
	function get2($idTutor=null, $idAlumno=null){
		$consulta = $this->db->query("SELECT *
									  FROM tutorxalumno
									  WHERE estado=1 AND 
											idTutor=".$this->db->escape($idTutor)." AND 
											idAlumno=".$this->db->escape($idAlumno)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la tutela contigua a una en particular usado generalmente en el formulario de modificar
	function getContiguo($idTxA=null, $cant=null, $idTutor=null){
		do{
			$idTxA+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM tutorxalumno
										  WHERE idTxA=".$this->db->escape($idTxA)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado<='-1' || $consulta->row()->idTutor != $idTutor);		
			
		return($consulta->row()->idTxA);
	}
	
	//Este metodo se utiliza para modificar una tutela
	function modificar($idTxA=null, $idAlumno=null, $biologico=null, $notificarAusentismoPorEmail=null, $estado=null){
		$consulta = $this->db->query("UPDATE `tutorxalumno` 
									 SET `idAlumno` = ". $this->db->escape($idAlumno) .",
									     `biologico` = ". $this->db->escape($biologico) .",
										 `notificarAusentismoPorEmail` = ". $this->db->escape($notificarAusentismoPorEmail) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `tutorxalumno`.`idTxA` = " . $this->db->escape($idTxA) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>